#ifndef THREADBLOCKER_H
#define THREADBLOCKER_H

//Библиотека Qt.
#include <QObject>
#include <QHash>


class ThreadBlocker : public QObject
{
	Q_OBJECT
public:
	//Конструктор.
	ThreadBlocker(QObject *parent = NULL);

	//Деструктор.
	virtual ~ThreadBlocker() {}

	//Функция добавления объекта в хэш.
	void addObject(int index, QObject *obj);

	//Функция блокировки нити.
	bool block(int timeout = 1000);

private:
	//Хэш объектов.
	QHash<int, QObject *> objectsHash;

	bool isRunning;
	bool isCompleted;

private slots:
	//Слот завершения задачи.
	void slotTaskCompleted(int index);

	//Слот окончания времени, отведённого на выполнение блокировки.
	void slotBlockTimeout();

};

#endif
